package com.ruoyi.job.mapper;

import com.ruoyi.omp.api.domain.*;
import jdk.nashorn.internal.runtime.linker.LinkerCallSite;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: cjie
 * @description: 收费项目
 * @date: 2021/9/23
 */
public interface FeeProjectMapper {
    /**
     * 查询公寓租赁费用
     *
     * @param apartmentFeeId 公寓租赁费用ID
     * @return 公寓租赁费用
     */
    FeApartment selectFeApartmentById(String apartmentFeeId);

    /**
     * 查询电梯费用
     *
     * @param elevatorFeeId 电梯费用ID
     * @return 电梯费用
     */
    FeElevator selectFeElevatorById(String elevatorFeeId);

    /**
     * 查询厂房/办公楼费用
     *
     * @param officeFeeId 厂房/办公楼费用ID
     * @return 厂房/办公楼费用
     */
    FeOffice selectFeOfficeById(String officeFeeId);


    int updateFeOffice(FeOffice office);

    int updateFeFacility(FeFacility facility);

    int updateFeProperty(FeProperty property);

    int updateFeApartment(FeApartment apartment);


    /**
     * 查询租金费用
     * @param recordState
     * @param effect
     * @param calculationMode
     * @return
     */
    List<FeOffice> selectFeOffice(@Param(value = "recordState") String recordState, @Param(value = "effect") String effect,
                                  @Param(value = "calculationMode") String calculationMode);


    /**
     * 查询设施费用
     *
     * @param facilityFeeId 设施费用ID
     * @return 设施费用
     */
    FeFacility selectFeFacilityById(String facilityFeeId);



    List<FeFacility> selectFeFacility(@Param(value = "recordState") String recordState, @Param(value = "effect") String effect,
                                      @Param(value = "calculationMode") String calculationMode);


    /**
     * 查询固定费用
     *
     * @param fixedFeeId 固定费用ID
     * @return 固定费用
     */
    FeFixed selectFeFixedById(String fixedFeeId);

    /**
     * 查询车位费用
     *
     * @param parkingFeeId 车位费用ID
     * @return 车位费用
     */
    FeParking selectFeParkingById(String parkingFeeId);

    /**
     * 查询物业费用
     *
     * @param propertyFeeId 物业费用ID
     * @return 物业费用
     */
    FeProperty selectFePropertyById(@Param(value="propertyFeeId")String propertyFeeId);


    /**
     * 查询物业费用列表
     *
     * @param propertyFeeId 物业费用ID
     * @return 物业费用
     */
    List<FeProperty> selectFeProperty(@Param(value = "recordState") String recordState, @Param(value = "effect") String effect,
                                      @Param(value = "calculationMode") String calculationMode);

    /**
     * 查询物业费用列表
     *
     * @param propertyFeeId 物业费用ID
     * @return 物业费用
     */
    List<FeApartment> selectFeApartment(@Param(value = "recordState") String recordState, @Param(value = "effect") String effect,
                                      @Param(value = "calculationMode") String calculationMode);

    List<String> selectFeApartmentDetails(String apartId);

    List<FeApartmentLeaseDetail> selectFeApartmentDetailList(String id);

}
